#pragma once

#include "../def.h"

// 固定结构体
typedef struct {
	b8_s is_down : 1;    // 是否是下降方向（减/除）
	b8_s is_mul_div : 1; // 是否是乘除法
} oper_dmd_s;

// 对外提供：oper_e枚举
typedef enum {
	OPER_ADD = 0, // is_mul_div = 0, is_down = 0
	OPER_SUB = 1, // is_mul_div = 0, is_down = 1
	OPER_MUL = 2, // is_mul_div = 1, is_down = 0
	OPER_DIV = 3, // is_mul_div = 1, is_down = 1
	OPER_MAX,     // 仅用于计算运算符种类数
} oper_e;

// 对外提供：oper_get_dmd()
static inline oper_dmd_s oper_get_dmd(oper_e oper) {
	union {
		oper_dmd_s s;
		oper_e e;
	} se = {
		.e = oper,
	};
	return se.s;
}
